package java19_1_21_exception;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

/**
 * @author yuisama
 * @date 2022/01/21 10:22
 **/
public class ThrowsTest {
    public static void main(String[] args) {
//        try {
//            test();
//        }catch (NullPointerException e) {
//            System.out.println("捕获空指针异常!");
//            e.printStackTrace();
//        }
//        fun();
//        System.out.println("fun之后的代码");
//        recursion();
        // 即使抛出这两个异常，我不写try..catch..也是可以的，编译不会出错
        test();
        try {
            test1();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static void test1() throws FileNotFoundException {
        File file = new File("test1.text");
        Scanner scanner = new Scanner(file);
    }

    // 调用test方法有可能会产生空指针异常，但是test方法不处理此异常，谁调用谁处理
    // 空指针和数组越界异常都属于非受查异常，可以不显示的进行try..catch
    public static void test() throws NullPointerException,ArrayIndexOutOfBoundsException {
        String str = null;
        System.out.println(str.length());
    }

//    public static void recursion() {
//        recursion();
//    }

    public static void fun() {
        // 人为产生了一个空指针异常对象，抛出给调用者
        throw new NullPointerException("没事干，抛个异常玩玩");
        // 抛出异常后，方法就会结束
    }


}